package br.com.bestOffer.ejb.vo;

import br.com.bestOffer.ejb.anuncio.entity.Anuncio;
import br.com.bestOffer.ejb.placaDeVideo.entity.PlacaDeVideo;
import br.com.bestOffer.enumerator.ArquiteturaPlacaDeVideo;
import br.com.bestOffer.enumerator.VersaoMemoriaPlacaDeVideo;

public class PlacaVideoVo extends ProdutoVo{

	private static final long serialVersionUID = -7243125742966442762L;

	public PlacaVideoVo(PlacaDeVideo placa,Anuncio anuncio) {
		super(anuncio);
		this.GPU = placa.getGPU();
		this.versaoPciRecomendado = placa.getVersaoPciRecomendado();
		this.quantidadeMemoria = placa.getQuantidadeMemoria();
		this.barramentoPciRecomendado = placa.getBarramentoPciRecomendado();
		this.barramento = placa.getBarramento();
		this.arquiteturaPlacaVideo = placa.getArquiteturaPlacaVideo();
		this.nomeAnunciante = anuncio.getId().getUsuario().getRazaoSocial();
		this.bairroAnunciante = anuncio.getId().getUsuario().getBairro();
		this.dualGpu = placa.getDualGpu();
		this.potenciaFonte = placa.getPotenciaFonte();
		this.fabricante = placa.getFabricante().getNomeFabricante();
		this.versaoMemoriaPlacaVideo = placa.getVersaoMemoriaPlacaVideo();
	}

	private String GPU;
	
	private String versaoPciRecomendado;
	
	private Integer quantidadeMemoria;
	
	private String barramentoPciRecomendado;
	
	private Integer barramento;
	
	private Boolean dualGpu;
	
	private Integer potenciaFonte;
	
	private VersaoMemoriaPlacaDeVideo versaoMemoriaPlacaVideo;
	
	private ArquiteturaPlacaDeVideo arquiteturaPlacaVideo;
	
	private Integer saidasDvi;
	
	private Integer saidasHdmi;
	
	private Integer saidasVga;
	
	private Integer saidasDisplayPort;
	
	private String nomeAnunciante;
	
	private String bairroAnunciante;
	
	private String fabricante;

	public String getGPU() {
		return GPU;
	}

	public void setGPU(String gPU) {
		GPU = gPU;
	}

	public String getVersaoPciRecomendado() {
		return versaoPciRecomendado;
	}

	public void setVersaoPciRecomendado(String versaoPciRecomendado) {
		this.versaoPciRecomendado = versaoPciRecomendado;
	}

	public Integer getQuantidadeMemoria() {
		return quantidadeMemoria;
	}

	public void setQuantidadeMemoria(Integer quantidadeMemoria) {
		this.quantidadeMemoria = quantidadeMemoria;
	}

	public String getBarramentoPciRecomendado() {
		return barramentoPciRecomendado;
	}

	public void setBarramentoPciRecomendado(String barramentoPciRecomendado) {
		this.barramentoPciRecomendado = barramentoPciRecomendado;
	}

	public Integer getBarramento() {
		return barramento;
	}

	public void setBarramento(Integer barramento) {
		this.barramento = barramento;
	}

	public Boolean getDualGpu() {
		return dualGpu;
	}

	public void setDualGpu(Boolean dualGpu) {
		this.dualGpu = dualGpu;
	}

	public Integer getPotenciaFonte() {
		return potenciaFonte;
	}

	public void setPotenciaFonte(Integer potenciaFonte) {
		this.potenciaFonte = potenciaFonte;
	}

	public VersaoMemoriaPlacaDeVideo getVersaoMemoriaPlacaVideo() {
		return versaoMemoriaPlacaVideo;
	}

	public void setVersaoMemoriaPlacaVideo(
			VersaoMemoriaPlacaDeVideo versaoMemoriaPlacaVideo) {
		this.versaoMemoriaPlacaVideo = versaoMemoriaPlacaVideo;
	}

	public ArquiteturaPlacaDeVideo getArquiteturaPlacaVideo() {
		return arquiteturaPlacaVideo;
	}

	public void setArquiteturaPlacaVideo(
			ArquiteturaPlacaDeVideo arquiteturaPlacaVideo) {
		this.arquiteturaPlacaVideo = arquiteturaPlacaVideo;
	}

	public Integer getSaidasDvi() {
		return saidasDvi;
	}

	public void setSaidasDvi(Integer saidasDvi) {
		this.saidasDvi = saidasDvi;
	}

	public Integer getSaidasHdmi() {
		return saidasHdmi;
	}

	public void setSaidasHdmi(Integer saidasHdmi) {
		this.saidasHdmi = saidasHdmi;
	}

	public Integer getSaidasVga() {
		return saidasVga;
	}

	public void setSaidasVga(Integer saidasVga) {
		this.saidasVga = saidasVga;
	}

	public Integer getSaidasDisplayPort() {
		return saidasDisplayPort;
	}

	public void setSaidasDisplayPort(Integer saidasDisplayPort) {
		this.saidasDisplayPort = saidasDisplayPort;
	}

	public String getNomeAnunciante() {
		return nomeAnunciante;
	}

	public void setNomeAnunciante(String nomeAnunciante) {
		this.nomeAnunciante = nomeAnunciante;
	}

	public String getBairroAnunciante() {
		return bairroAnunciante;
	}

	public void setBairroAnunciante(String bairroAnunciante) {
		this.bairroAnunciante = bairroAnunciante;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((GPU == null) ? 0 : GPU.hashCode());
		result = prime
				* result
				+ ((arquiteturaPlacaVideo == null) ? 0 : arquiteturaPlacaVideo
						.hashCode());
		result = prime
				* result
				+ ((bairroAnunciante == null) ? 0 : bairroAnunciante.hashCode());
		result = prime * result
				+ ((barramento == null) ? 0 : barramento.hashCode());
		result = prime
				* result
				+ ((barramentoPciRecomendado == null) ? 0
						: barramentoPciRecomendado.hashCode());
		result = prime * result + ((dualGpu == null) ? 0 : dualGpu.hashCode());
		result = prime * result
				+ ((nomeAnunciante == null) ? 0 : nomeAnunciante.hashCode());
		result = prime * result
				+ ((potenciaFonte == null) ? 0 : potenciaFonte.hashCode());
		result = prime
				* result
				+ ((quantidadeMemoria == null) ? 0 : quantidadeMemoria
						.hashCode());
		result = prime
				* result
				+ ((saidasDisplayPort == null) ? 0 : saidasDisplayPort
						.hashCode());
		result = prime * result
				+ ((saidasDvi == null) ? 0 : saidasDvi.hashCode());
		result = prime * result
				+ ((saidasHdmi == null) ? 0 : saidasHdmi.hashCode());
		result = prime * result
				+ ((saidasVga == null) ? 0 : saidasVga.hashCode());
		result = prime
				* result
				+ ((versaoMemoriaPlacaVideo == null) ? 0
						: versaoMemoriaPlacaVideo.hashCode());
		result = prime
				* result
				+ ((versaoPciRecomendado == null) ? 0 : versaoPciRecomendado
						.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		PlacaVideoVo other = (PlacaVideoVo) obj;
		if (GPU == null) {
			if (other.GPU != null)
				return false;
		} else if (!GPU.equals(other.GPU))
			return false;
		if (arquiteturaPlacaVideo != other.arquiteturaPlacaVideo)
			return false;
		if (bairroAnunciante == null) {
			if (other.bairroAnunciante != null)
				return false;
		} else if (!bairroAnunciante.equals(other.bairroAnunciante))
			return false;
		if (barramento == null) {
			if (other.barramento != null)
				return false;
		} else if (!barramento.equals(other.barramento))
			return false;
		if (barramentoPciRecomendado == null) {
			if (other.barramentoPciRecomendado != null)
				return false;
		} else if (!barramentoPciRecomendado
				.equals(other.barramentoPciRecomendado))
			return false;
		if (dualGpu == null) {
			if (other.dualGpu != null)
				return false;
		} else if (!dualGpu.equals(other.dualGpu))
			return false;
		if (nomeAnunciante == null) {
			if (other.nomeAnunciante != null)
				return false;
		} else if (!nomeAnunciante.equals(other.nomeAnunciante))
			return false;
		if (potenciaFonte == null) {
			if (other.potenciaFonte != null)
				return false;
		} else if (!potenciaFonte.equals(other.potenciaFonte))
			return false;
		if (quantidadeMemoria == null) {
			if (other.quantidadeMemoria != null)
				return false;
		} else if (!quantidadeMemoria.equals(other.quantidadeMemoria))
			return false;
		if (saidasDisplayPort == null) {
			if (other.saidasDisplayPort != null)
				return false;
		} else if (!saidasDisplayPort.equals(other.saidasDisplayPort))
			return false;
		if (saidasDvi == null) {
			if (other.saidasDvi != null)
				return false;
		} else if (!saidasDvi.equals(other.saidasDvi))
			return false;
		if (saidasHdmi == null) {
			if (other.saidasHdmi != null)
				return false;
		} else if (!saidasHdmi.equals(other.saidasHdmi))
			return false;
		if (saidasVga == null) {
			if (other.saidasVga != null)
				return false;
		} else if (!saidasVga.equals(other.saidasVga))
			return false;
		if (versaoMemoriaPlacaVideo != other.versaoMemoriaPlacaVideo)
			return false;
		if (versaoPciRecomendado == null) {
			if (other.versaoPciRecomendado != null)
				return false;
		} else if (!versaoPciRecomendado.equals(other.versaoPciRecomendado))
			return false;
		return true;
	}

	public String getFabricante() {
		return fabricante;
	}

	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}
	
	

}
